package com.ruubypay.biz.mvc.workflow.service;

import com.ruubypay.biz.mvc.workflow.model.request.CandidateUser;
import com.ruubypay.biz.mvc.workflow.model.request.ProcessInstanceVO;
import com.ruubypay.biz.mvc.workflow.model.response.AuditProcessResponse;
import com.ruubypay.web.common.page.DataGrid;

import java.io.IOException;
import java.util.List;
import java.util.Map; /**
 * 运行中的流程实例接口API
 * @author chenhaiyang
 */
public interface RuntimeProcessService {

    /**
     * 分页获取运行中的历史的流程实例列表
     * @param paramMap 参数列表
     * @param pageNumber 分页页码
     * @param pageSize pageSize
     * @return 返回数据集
     */
    DataGrid listDataRuntimeProcesses(Map<String, Object> paramMap, Integer pageNumber, Integer pageSize);

    /**
     * 对运行中的流实例进行激活或者挂起
     * @param processInstanceVO 流程实例
     */
    void suspendedOrNo(ProcessInstanceVO processInstanceVO);

    /**
     * 对运行中的流程进行作废
     * @param processInstanceVO 流程实例VO类
     */
    void deleteProcessInstance(ProcessInstanceVO processInstanceVO);


    /**
     * 根据任务执行id获取流转历史列表
     * @param excuseId 流程执行id
     * @return 返回历史流转列表
     */
    List<AuditProcessResponse> histoicFlowList(String excuseId);

    /**
     * 根据任务的执行id获取当前流程图的情况
     * @param excuseId 执行id
     * @return 返回图片
     * @throws IOException IO异常
     */
    String getNowTaskPng(String excuseId) throws IOException;

    /**
     * 根据任务的执行Id重新分配当前任务的办理者
     * @param candidateUser 任务候选人分类对象
     */
    void candidateUser(CandidateUser candidateUser);
}
